package com.youlu.campus.entity;

import com.youlu.campus.base.base.EntityBase;
import com.youlu.campus.entity.domain.PlayBillDomain;
import com.youlu.campus.entity.enums.TaskBizType;
import com.youlu.campus.entity.enums.TaskExecuteType;
import lombok.Data;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.ArrayList;
import java.util.List;

/**
 * 活动任务信息表，创意分享任务的运营目的:展示内容、展示效果,有赞的分销链接
 */
@Data
@Document(collection = "activity_task_info")
public class ActivityTaskInfo extends EntityBase {
    /**
     * 活动ID
     */
    @Indexed
    private String activityId;
    /**
     * 状态.false 状态不启用
     */
    private Boolean status = Boolean.TRUE;
    /**
     * 任务名字
     */
    private String name;
    /**
     * 是否显示任务详情
     */
    private Boolean showDetail = Boolean.TRUE;
    /**
     * 活动任务详情介绍,富文本
     */
    private String detail;
    /**
     * 活动任务详情介绍图片,QQ小程序活动详情页任务图片组
     */
    private List<String> imageUrls = new ArrayList<String>();
    /**
     * 海报信息
     */
    private PlayBillDomain playBill = new PlayBillDomain();
    /**
     * 任务类型
     */
    @Indexed
    private TaskBizType taskBizType;
    /**
     * 单位,例如,单,人,分数
     */
    private String unit = "人";
    /**
     * 排行榜文案,图片
     */
    private String rankingListImageUrl;
    /**
     * 排行榜文案内容,富文本
     */
    private String rankingListContent;
    /**
     * 奖励内容介绍,富文本
     */
    private String rewardDesc;
    /**
     * 奖励内容介绍图片
     */
    private String rewardImageUrl;
    /**
     * 激励提示,例如:你真棒！已完成5组营销大赛成绩，再完成3组可获得【特等奖】大赛证书（纸质版包邮）。
     * 配置通过%d,%s来占位--> 例如:你真棒！已完成%d组营销大赛成绩，再完成%d组可获得%s。
     */
    private String tips = "每学习1天，可累计0.5志愿时长";
    /**
     * 排序号,数字越大排序越高
     */
    private Integer priority = 0;
    /**
     * 工作量,例如:分享数量,订单量
     */
    private Double quantity;
    /**
     * 分享任务是否更新榜单
     */
    private Boolean updateRanking = Boolean.FALSE;
    /**
     * H5提示语
     */
    private String h5Tips;
    /**
     * 进度,QQ 小程序任务进度
     */
    @Transient
    private Double rate;
    /**
     * 礼品富文本
     */
    private String giftTips;
    /**
     * 是否有礼品说明
     */
    private Boolean hasGiftTips = Boolean.FALSE;
    /**
     * 背景图片
     */
    private String backGroundImageUrl;
    /**
     * 是否有背景图片
     */
    private Boolean hasBackGroundImageUrl = Boolean.FALSE;
    /**
     * 比例
     */
    private Double ratio = 1.0D;
    /**
     * 排行榜的数量
     */
    private Integer rangNum = 100;
    /**
     * 累加方式,1:添加贡献值,2:志愿时长
     */
    private String bizType = "1";
    /**
     * 是否有分享
     */
    private Boolean hasShare = Boolean.FALSE;
    /**
     * 海报属性:header,nickName,qrCode:二维码
     */
    private String[] props = {"header", "nickName", "qrCode"};
    /**
     * 任务头部文案
     */
    private String headerTips;
    /**
     * 任务头部副标题
     */
    private String headerSubTips;
    /**
     * 0 时，headerTips + headerSubTips
     * 1时，headerTips 和 headerSubTips分开显示
     */
    private Integer layoutNo = 0;

    /**
     * 规则,倡议书规则内容，H5
     */
    private String rule;
    /**
     * 外部链接
     */
    private String linkerUrl;
    /**
     * 是否显示外部链接和规则
     */
    private Boolean showRuleAndLiner = Boolean.FALSE;
    /**
     * 门限,合格的值
     */
    @Indexed
    private Integer threshold;
    /**
     * 是否默认获取
     */
    private Boolean defaulted = Boolean.FALSE;
    /**
     * 奖励值
     */
    private Double points = 10.0D;

    /**
     * 额外奖励值
     */
    private Double extraPoints = 0D;

    /**
     * 电子证书介绍,富文本，开始答题边上有个电子证书规则
     */
    private String digitCaDetail;
    /**
     * 是否显示电子证书详情,开始答题边上有个电子证书规则
     */
    private Boolean showDigit = Boolean.FALSE;
    /**
     * 默认提示语言
     */
    private String defaultTips = "加油澳！请邀请更多的同学参与活动";

    /**
     * 邀请人数提示语言
     */
    private String inviteNumTips = "加油澳！请邀请更多的同学参与活动";
    /**
     * 邀请按钮提示语
     */
    private String inviteButtonTips = "邀请";
    /**
     * 邀请背景图
     */
    private String inviteBackGroundImageUrl;

    /**
     * 1、文字 2、图片
     */
    private Integer shareInviteButtonType = 1;
    /**
     * 分享邀请按钮图片
     */
    private String shareInviteButtonBackGroundImgUrl;
    /**
     * 进度条计算纬度,invited-num:邀请人数,point:贡献值，invited-num-and-point:邀请人数和贡献值
     */
    private String progressBarType = "point";
    /**
     * Logo
     */
    private String logo;
    /**
     * 任务页面展示语,例如:实践行动
     */
    private String title;
    /**
     * 任务页面展示副标题,例如:上传活动图片，可获得活力值
     */
    private String subTitle;
    /**
     * 按钮名字
     */
    private String buttonName;
    /**
     * 文件类型,1、图片 2、文件 3、视频,4、其他
     */
    private List<Integer> fileTypes = new ArrayList<>();
    /**
     * 是否有限时邀请
     */
    private Boolean hasInviteLimit = Boolean.TRUE;
    /**
     * 限时邀请时限,单位秒
     */
    private Integer inviteLimit = 3600;
    /**
     * 限时邀请贡献值
     */
    private Double inviteLimitQuantity = 30D;
    /**
     * 限时邀请提示语
     */
    private String inviteLimitTips = "1小时内成功邀请首个好友贡献值+30，";
    /**
     * 副提示语
     */
    private String subTips = "贡献值>=10可获得《活动证明》";
    /**
     * 任务获得证书显示语,例如:志愿者证书/荣誉证书
     */
    private String caDisplay = "志愿者证书";
    /**
     * 当前任务量显示语,例如:当前贡献值/当前分数
     */
    private String quantityDisplay = "当前贡献值";
    /**
     * 外部链接
     */
    private String outerLinker;
    /**
     * 外部链接图片,配置QQ群二维码地址
     */
    private String outerLinkerImage;
    /**
     * 任务可做背景图,例如可答题时背景图
     */
    private String canBackGroundImage;
    /**
     * 任务不可可做背景图，例如不可答题时背景图
     */
    private String notCanBackGroundImage;
    /**
     * 是否对外开放,控制用户可见任务列表
     */
    private Boolean opened = Boolean.TRUE;
    /**
     * 微信模版消息
     */
    private List<WechatTemplateMsg> wechatTemplateMsgs = new ArrayList<>();
    /**
     * 可参与门限
     */
    private Integer availableThreshold;

    /**
     * 任务-承办单位别名
     */
    private String taskAlias;
    /**
     * 任务-承办单位待审核图片URL地址
     */
    private String taskPendAuditImgUrl;

    /**
     * 任务-承办单位审核通过图片URL地址
     */
    private String taskPassAuditImgUrl;

    /**
     * 宣传文案描述-针对实践行动和作品征集任务
     */
    private String propagandaDesc;

    /**
     * 活动任务扩展字段
     */
    private String taskExtra;

    /**
     * 按钮背景颜色
     */
    private String buttonBackgroundColor;

    /**
     * 按钮文字颜色
     */
    private String buttonTextColor;

    /**
     * 任务执行类型
     */
    private TaskExecuteType taskExecuteType = TaskExecuteType.ONCE;

    /**
     * 审核类型 false 人工审核 true 定时审核
     */
    private Boolean approveType = Boolean.FALSE;
    /**
     * 审核通过短信模版
     * <p>
     * 同学您好，很遗憾通知您，您提交的{1}未通过审核。请到活动页面查看结果并重新提交。
     */
    private Integer approvePassSmsTemplateId = 2022143;
    /**
     * 审核不通过短信模版
     * 同学您好，恭喜你，您提交的{1}通过审核。请到活动页面查看你的奖励。
     */
    private Integer approveNotPassSmsTemplateId = 2022144;
    /**
     * 是否短信通知用户
     */
    private Boolean sendSms = Boolean.FALSE;

    /**
     * 任务定时审核时长(秒)
     */
    private Integer taskApproveTime = 0;

    /**
     * 签到打卡任务打卡天数
     */
    private Integer signInDay = 0;

    /**
     * 打卡签到提示图
     */
    private String signInTipImgUrl;
    /**
     * 证书等级
     */
    private String caGroupName;
}
